package com.paic.mhis.hcpms.evaluation.common.biz.service;

import java.util.Map;

import com.paic.mhis.core.auth.biz.service.UserDetails;


/**
 * 定点机构 流程服务接口
 * @author EX-XIEQI001
 *
 */
public interface EvaluationWorkFlowService {
	
	/**
	 * 启动流程
	 * @param taskNo  当前编号 唯一值
	 * @param user 当前用户 对象
	 * @param taskType 流程类型
	 * @return
	 * @throws Exception
	 */
	public String startWorkFlow(String taskNo, UserDetails user, String taskType) throws Exception;
	
	/**
	 * 流程流转
	 * @param taskNo  当前编号 唯一值
	 * @param user  当前用户 对象
	 * @param condition 属性值
	 * @param taskType 流程类型
	 * @return
	 * @throws Exception
	 */
	public String processWorkFlow(String taskNo, UserDetails user, Map<String, String> condition, String taskType) throws Exception;
	
	/**
	 * 退回
	 * @param taskNo 当前编号 唯一值
	 * @param user   当前用户 对象
	 * @param nextUserName 下一结点处理人Id
	 * @param condition 属性值
	 * @param taskType 流程类型
	 * @return
	 * @throws Exception
	 */
	public String processWorkFlow(String taskNo, UserDetails user, String nextUserName, Map<String, String> condition, String taskType)throws Exception;
	
	/**
	 * 撤回
	 * @param taskNo 当前编号 唯一值
	 * @param user   当前用户 对象
	 * @param nextUserName 下一结点处理人Id
	 * @param condition 属性值
	 * @param taskType 流程类型
	 * @param nextActNo  下一结点Id
	 * @return
	 * @throws Exception
	 */
	public String processWorkFlow(String taskNo, UserDetails user, String nextUserName, Map<String, String> condition, 
			String taskType, String nextActNo) throws Exception;
	
	/**
	 *  关闭流程
	 * @param taskNo 当前编号 唯一值
	 * @param taskType  流程类型
	 * @throws EvaluationException
	 */
	public void closeWorkFlow(String taskNo, String taskType) throws Exception;
	
}
